package backend

import (
	"blog/service/page"
	"net/http"

	"gitee.com/xchengli/blog-lib/session"

	"github.com/gin-gonic/gin"
)

/*
*
 */
func AdminLinkHandle(ctx *gin.Context) {
	guest := new(session.GuestSession)
	//检查是否未登录
	if guest.Init(ctx.Request).CheckIsLogin() == false {
		ctx.JSON(http.StatusServiceUnavailable, gin.H{"error": "未登录"})
		return
	}

	ctx.HTML(http.StatusOK, "adminLink.html", nil)
}

/*
*
获取所有的友链
*/
func AdminLinkAllHandle(ctx *gin.Context) {
	guest := new(session.GuestSession)
	//检查是否未登录
	if guest.Init(ctx.Request).CheckIsLogin() == false {
		ctx.JSON(http.StatusUnauthorized, gin.H{"error": "未登录"})
		return
	}

	// 使用PS层服务
	adminLinkService := page.NewAdminLinkPageService()
	all, err := adminLinkService.GetAllLinks(ctx)
	if err != nil {
		ctx.JSON(http.StatusInternalServerError, gin.H{"error": "获取链接数据失败"})
		return
	}

	ctx.JSON(http.StatusOK, gin.H{"code": 0, "message": "success", "data": all})
}

func AdminLinkAddHandle(ctx *gin.Context) {
	guest := new(session.GuestSession)
	//检查是否未登录
	if guest.Init(ctx.Request).CheckIsLogin() == false {
		ctx.JSON(http.StatusUnauthorized, gin.H{"error": "未登录"})
		return
	}

	// 使用PS层服务
	adminLinkService := page.NewAdminLinkPageService()

	// 使用 ps 层创建数据结构
	lk := adminLinkService.CreateLinkData()
	err := adminLinkService.ValidateLinkForm(ctx, lk, ctx.Request.Form)
	if err != nil {
		ctx.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
		return
	}

	//执行添加
	err = adminLinkService.CreateLink(ctx, lk)
	if err != nil {
		ctx.JSON(http.StatusInternalServerError, gin.H{"error": "添加失败"})
		return
	}
	ctx.JSON(http.StatusOK, gin.H{"code": 0, "message": "success", "data": lk})
}
